package com.yc.thread.basic;

/**
 * @author zwei
 * @create 2024-07-14 14:24
 */
public class Test7_isInterrupted {
    public static void main(String[] args) {
        //当前线程
        Thread thread = Thread.currentThread();
        //检测当前线程是否被中断
        System.out.println(thread.getName()+"线程是否被中断"+thread.isInterrupted());  //false

        //测试这句话设置线程中断标识
        thread.interrupt(); //发一个中断信号
        //检测当前线程是否被中断
        System.out.println(thread.getName()+"线程是否被中断"+thread.isInterrupted());  //true
        //检测线程中断状态是否被清除
        System.out.println(thread.getName()+"线程是否被中断"+thread.isInterrupted());  //true
        try {
            //线程休眠2秒
            Thread.sleep(2000); //本来要在main线程中睡眠2秒的但因为interrupt()被调用了  所以sleep被打断
            System.out.println(thread.getName()+"线程休眠未被打断");
        } catch (InterruptedException e) {
            //捕获到sleep被打断异常
            e.printStackTrace();
            System.out.println(thread.getName()+"线程休眠被打断。。。");
            //判断线程是否被中断  因为异常已经处理完  所以状态休眠恢复  扩展  在catch中写处理代码。。
            System.out.println(thread.getName()+"线程是否中断"+thread.isInterrupted());   //false
        }
        System.out.println(thread.getName()+"线程是否中断"+thread.isInterrupted());
    }
}
